

// 加载BIOS
function loadRom(url, callback) {
	var xhr = new XMLHttpRequest();
	xhr.open('GET', url);
	xhr.responseType = 'blob';

	xhr.onload = function() { console.log(xhr.response);callback(xhr.response) };
	xhr.send();
}
loadRom("./resources/GBA.BIOS.bin", function(f) {
    var files = [f];
    console.log(files);
    fileLoadShimCode(files, attachBIOS);
});


function isPC() {
    var userAgentInfo = navigator.userAgent;
    var result = false;
    if (userAgentInfo.includes("Windows NT"))
        result = true;
    return result;
}



function 提示() {
    alert("bios会自动加载，如果没有加载成功可以手动加载");
    alert("\n\
        上下左右使用导航键\n \
        A对应键盘6\n \
        B对应键盘5\n \
        L对应键盘2\n \
        R对应键盘3\n \
        START对应右软键\n \
        SELECT对应左软键\n \
        *：加载游戏，#：加载bios\n \
        0：开始游戏，8：暂停\n \
        挂断键:重置游戏\n \
        7：开启关闭声音，1：提高音量，4：降低音量\n \
    ");

    if (!isPC)
        return;
    alert("\
        电脑端：\n \
        p：开始游戏\n \
        o：暂停游戏\n \
        r：重置游戏\n \
        上下左右使用wsad\n \
        k：A\n \
        j：B\n \
        u：L\n \
        i：R\n \
        回车键：START\n \
        空格键：SELECT\n \
        g：加载游戏\n \
        b：加载bios\n \
    ");
}
提示();


window.addEventListener("keydown",function(e) {
    switch(e.key)
    {
        case "m":
        case "Call":
            提示();
            break;
        case "r":// 重置游戏（电脑）
        case "EndCall":// 重置游戏
            IodineGUI.toMap = IodineGUI.defaults.keyZonesControl;
            IodineGUI.toMapIndice = 7;
            break;
        case "p":// 开始游戏（电脑）
        case "0":// 开始游戏
            IodineGUI.Iodine.play();
        case "o":// 暂停游戏（电脑）
        case "8":// 暂停游戏
            IodineGUI.Iodine.pause();
            break;
        case "g"://加载游戏（电脑）
        case "*"://加载游戏
            document.getElementById("rom_load").click()
            break;

        case "b"://加载bios（电脑）
        case "#"://加载bios
            document.getElementById("bios_load").click();
            break;


        case "7"://开启关闭声音
            alert("暂不支持");
            /*
            setValue("sound", !!this.checked);
            if (this.checked) {
                IodineGUI.Iodine.enableAudio();
            }
            else {
                IodineGUI.Iodine.disableAudio();
            }
            */
            break;
        case "1"://降低音量
            alert("暂不支持");
            break;
        case "4"://增大音量
            alert("暂不支持");
            break;


        /* 游戏按键 */
        case " ":// select（电脑）
        case "SoftLeft":// select
            IodineGUI.Iodine.keyDown(2);
            break;
        case "Enter":// start（电脑）
        case "SoftRight":// start
            IodineGUI.Iodine.keyDown(3);
            break;

        case "w":// up（电脑）
        case "ArrowUp":// up
            IodineGUI.Iodine.keyDown(6);
            break;
        case "s":// down（电脑）
        case "ArrowDown":// down
            IodineGUI.Iodine.keyDown(7);
            break;
        case "a":// left（电脑）
        case "ArrowLeft":// left
            IodineGUI.Iodine.keyDown(5);
            break;
        case "d":// right（电脑）
        case "ArrowRight":// right
            IodineGUI.Iodine.keyDown(4);
            break;

        case "u":// L（电脑）
        case "2":// L
            IodineGUI.Iodine.keyDown(9);
            break;
        case "i":// R（电脑）
        case "3":// R
            IodineGUI.Iodine.keyDown(8);
            break;
        case "k":// A（电脑）
        case "6":// A
            IodineGUI.Iodine.keyDown(0);
            break;
        case "j":// B（电脑）
        case "5":// B
            IodineGUI.Iodine.keyDown(1);
            break;
    }
});


window.addEventListener("keyup", function(e) {
    switch(e.key)
    {
        /* 游戏按键 */
        case " ":// select（电脑）
        case "SoftLeft":// select
            IodineGUI.Iodine.keyUp(2);
            break;
        case "Enter":// start（电脑）
        case "SoftRight":// start
            IodineGUI.Iodine.keyUp(3);
            break;

        case "w":// up（电脑）
        case "ArrowUp":// up
            IodineGUI.Iodine.keyUp(6);
            break;
        case "s":// down（电脑）
        case "ArrowDown":// down
            IodineGUI.Iodine.keyUp(7);
            break;
        case "a":// left（电脑）
        case "ArrowLeft":// left
            IodineGUI.Iodine.keyUp(5);
            break;
        case "d":// right（电脑）
        case "ArrowRight":// right
            IodineGUI.Iodine.keyUp(4);
            break;

        case "u":// L（电脑）
        case "2":// L
            IodineGUI.Iodine.keyUp(9);
            break;
        case "i":// R（电脑）
        case "3":// R
            IodineGUI.Iodine.keyUp(8);
            break;
        case "k":// A（电脑）
        case "6":// A
            IodineGUI.Iodine.keyUp(0);
            break;
        case "j":// B（电脑）
        case "5":// B
            IodineGUI.Iodine.keyUp(1);
            break;
    }
});


